{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "therapeutic-notebook",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "fitting-berry",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a    1\n",
      "b    2\n",
      "c    3\n",
      "d    4\n",
      "dtype: int64 <class 'pandas.core.series.Series'>\n"
     ]
    }
   ],
   "source": [
    "s1 = pd.Series([1,2,3,4],index=[\"a\",\"b\",\"c\",\"d\"])\n",
    "print(s1,type(s1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "flying-production",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "subtle-thanks",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.2909944487358056"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "flush-fault",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "c    3\n",
       "dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1[2:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "southern-missouri",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       name  age\n",
      "0  zhangSan   20\n",
      "1      liSi   18\n",
      "2    wangWu   22 <class 'pandas.core.frame.DataFrame'>\n"
     ]
    }
   ],
   "source": [
    "df1 = pd.DataFrame({\n",
    "    \"name\":[\"zhangSan\",\"liSi\",\"wangWu\"],\n",
    "    \"age\":[20,18,22]\n",
    "})\n",
    "print(df1,type(df1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "afraid-official",
   "metadata": {},
   "outputs": [],
   "source": [
    "stuDf = pd.read_csv(\"../data/students.txt\",header=None,names=[\"id\",\"name\",\"age\",\"gender\",\"clazz\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "forty-sigma",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>name</th>\n",
       "      <th>age</th>\n",
       "      <th>gender</th>\n",
       "      <th>clazz</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1500100001</td>\n",
       "      <td>施笑槐</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>文科六班</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1500100002</td>\n",
       "      <td>吕金鹏</td>\n",
       "      <td>24</td>\n",
       "      <td>男</td>\n",
       "      <td>文科六班</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1500100003</td>\n",
       "      <td>单乐蕊</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>理科六班</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1500100004</td>\n",
       "      <td>葛德曜</td>\n",
       "      <td>24</td>\n",
       "      <td>男</td>\n",
       "      <td>理科三班</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1500100005</td>\n",
       "      <td>宣谷芹</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>理科五班</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           id name  age gender clazz\n",
       "0  1500100001  施笑槐   22      女  文科六班\n",
       "1  1500100002  吕金鹏   24      男  文科六班\n",
       "2  1500100003  单乐蕊   22      女  理科六班\n",
       "3  1500100004  葛德曜   24      男  理科三班\n",
       "4  1500100005  宣谷芹   22      女  理科五班"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stuDf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "incorporated-rachel",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n"
     ]
    }
   ],
   "source": [
    "print(type(stuDf))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "confidential-interest",
   "metadata": {},
   "outputs": [],
   "source": [
    "scoreDF = pd.read_csv(\"../data/score.txt\",header=None,names=[\"id\",\"score_id\",\"score\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "cordless-talent",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>score_id</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5995</th>\n",
       "      <td>1500101000</td>\n",
       "      <td>1000002</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5996</th>\n",
       "      <td>1500101000</td>\n",
       "      <td>1000003</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5997</th>\n",
       "      <td>1500101000</td>\n",
       "      <td>1000007</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5998</th>\n",
       "      <td>1500101000</td>\n",
       "      <td>1000008</td>\n",
       "      <td>87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5999</th>\n",
       "      <td>1500101000</td>\n",
       "      <td>1000009</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              id  score_id  score\n",
       "5995  1500101000   1000002     78\n",
       "5996  1500101000   1000003     81\n",
       "5997  1500101000   1000007      5\n",
       "5998  1500101000   1000008     87\n",
       "5999  1500101000   1000009     28"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scoreDF.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "jewish-distribution",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计每个学生的总分\n",
    "sumDF = scoreDF.groupby(scoreDF[\"id\"])[\"score\"].sum()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "mexican-offset",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id\n",
      "1500100001    406\n",
      "1500100002    440\n",
      "1500100003    359\n",
      "1500100004    421\n",
      "1500100005    395\n",
      "             ... \n",
      "1500100996    355\n",
      "1500100997    293\n",
      "1500100998    398\n",
      "1500100999    371\n",
      "1500101000    379\n",
      "Name: score, Length: 1000, dtype: int64 <class 'pandas.core.series.Series'>\n"
     ]
    }
   ],
   "source": [
    "print(sumDF,type(sumDF))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "distinct-filter",
   "metadata": {},
   "outputs": [],
   "source": [
    "sumDF = sumDF.reset_index()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "handled-liabilities",
   "metadata": {},
   "outputs": [],
   "source": [
    "sumDF = sumDF.rename(columns={\"id\":\"id\",\"score\":\"sum_score\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "imposed-williams",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             id  sum_score\n",
      "0    1500100001        406\n",
      "1    1500100002        440\n",
      "2    1500100003        359\n",
      "3    1500100004        421\n",
      "4    1500100005        395\n",
      "..          ...        ...\n",
      "995  1500100996        355\n",
      "996  1500100997        293\n",
      "997  1500100998        398\n",
      "998  1500100999        371\n",
      "999  1500101000        379\n",
      "\n",
      "[1000 rows x 2 columns] <class 'pandas.core.frame.DataFrame'>\n"
     ]
    }
   ],
   "source": [
    "print(sumDF,type(sumDF))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "liable-tourism",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>name</th>\n",
       "      <th>age</th>\n",
       "      <th>gender</th>\n",
       "      <th>clazz</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1500100001</td>\n",
       "      <td>施笑槐</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>文科六班</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1500100002</td>\n",
       "      <td>吕金鹏</td>\n",
       "      <td>24</td>\n",
       "      <td>男</td>\n",
       "      <td>文科六班</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1500100003</td>\n",
       "      <td>单乐蕊</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>理科六班</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1500100004</td>\n",
       "      <td>葛德曜</td>\n",
       "      <td>24</td>\n",
       "      <td>男</td>\n",
       "      <td>理科三班</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1500100005</td>\n",
       "      <td>宣谷芹</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>理科五班</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           id name  age gender clazz\n",
       "0  1500100001  施笑槐   22      女  文科六班\n",
       "1  1500100002  吕金鹏   24      男  文科六班\n",
       "2  1500100003  单乐蕊   22      女  理科六班\n",
       "3  1500100004  葛德曜   24      男  理科三班\n",
       "4  1500100005  宣谷芹   22      女  理科五班"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stuDf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "identified-stamp",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>sum_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1500100001</td>\n",
       "      <td>406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1500100002</td>\n",
       "      <td>440</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1500100003</td>\n",
       "      <td>359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1500100004</td>\n",
       "      <td>421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1500100005</td>\n",
       "      <td>395</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  sum_score\n",
       "0  1500100001        406\n",
       "1  1500100002        440\n",
       "2  1500100003        359\n",
       "3  1500100004        421\n",
       "4  1500100005        395"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sumDF.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "corrected-violin",
   "metadata": {},
   "outputs": [],
   "source": [
    "stuDf = stuDf.set_index(\"id\")\n",
    "sumDF = sumDF.set_index(\"id\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "japanese-reputation",
   "metadata": {},
   "outputs": [],
   "source": [
    "joinDF = stuDf.join(sumDF)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "corrected-tunisia",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>age</th>\n",
       "      <th>gender</th>\n",
       "      <th>clazz</th>\n",
       "      <th>sum_score</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1500100001</th>\n",
       "      <td>施笑槐</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>文科六班</td>\n",
       "      <td>406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100002</th>\n",
       "      <td>吕金鹏</td>\n",
       "      <td>24</td>\n",
       "      <td>男</td>\n",
       "      <td>文科六班</td>\n",
       "      <td>440</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100003</th>\n",
       "      <td>单乐蕊</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>理科六班</td>\n",
       "      <td>359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100004</th>\n",
       "      <td>葛德曜</td>\n",
       "      <td>24</td>\n",
       "      <td>男</td>\n",
       "      <td>理科三班</td>\n",
       "      <td>421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100005</th>\n",
       "      <td>宣谷芹</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>理科五班</td>\n",
       "      <td>395</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           name  age gender clazz  sum_score\n",
       "id                                          \n",
       "1500100001  施笑槐   22      女  文科六班        406\n",
       "1500100002  吕金鹏   24      男  文科六班        440\n",
       "1500100003  单乐蕊   22      女  理科六班        359\n",
       "1500100004  葛德曜   24      男  理科三班        421\n",
       "1500100005  宣谷芹   22      女  理科五班        395"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joinDF.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "several-oregon",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>sum_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>age</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.019819</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sum_score</th>\n",
       "      <td>-0.019819</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                age  sum_score\n",
       "age        1.000000  -0.019819\n",
       "sum_score -0.019819   1.000000"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joinDF.corr()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "cleared-thing",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id\n",
       "1500100001    406\n",
       "1500100002    440\n",
       "1500100003    359\n",
       "1500100004    421\n",
       "1500100005    395\n",
       "             ... \n",
       "1500100996    355\n",
       "1500100997    293\n",
       "1500100998    398\n",
       "1500100999    371\n",
       "1500101000    379\n",
       "Name: sum_score, Length: 1000, dtype: int64"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joinDF.sum_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "economic-music",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>age</th>\n",
       "      <th>gender</th>\n",
       "      <th>clazz</th>\n",
       "      <th>sum_score</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1500100001</th>\n",
       "      <td>施笑槐</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>文科六班</td>\n",
       "      <td>406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100003</th>\n",
       "      <td>单乐蕊</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>理科六班</td>\n",
       "      <td>359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100004</th>\n",
       "      <td>葛德曜</td>\n",
       "      <td>24</td>\n",
       "      <td>男</td>\n",
       "      <td>理科三班</td>\n",
       "      <td>421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100005</th>\n",
       "      <td>宣谷芹</td>\n",
       "      <td>22</td>\n",
       "      <td>女</td>\n",
       "      <td>理科五班</td>\n",
       "      <td>395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100006</th>\n",
       "      <td>边昂雄</td>\n",
       "      <td>21</td>\n",
       "      <td>男</td>\n",
       "      <td>理科二班</td>\n",
       "      <td>314</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100996</th>\n",
       "      <td>厉运凡</td>\n",
       "      <td>24</td>\n",
       "      <td>男</td>\n",
       "      <td>文科三班</td>\n",
       "      <td>355</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100997</th>\n",
       "      <td>陶敬曦</td>\n",
       "      <td>21</td>\n",
       "      <td>男</td>\n",
       "      <td>理科六班</td>\n",
       "      <td>293</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100998</th>\n",
       "      <td>容昆宇</td>\n",
       "      <td>22</td>\n",
       "      <td>男</td>\n",
       "      <td>理科四班</td>\n",
       "      <td>398</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500100999</th>\n",
       "      <td>钟绮晴</td>\n",
       "      <td>23</td>\n",
       "      <td>女</td>\n",
       "      <td>文科五班</td>\n",
       "      <td>371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1500101000</th>\n",
       "      <td>符瑞渊</td>\n",
       "      <td>23</td>\n",
       "      <td>男</td>\n",
       "      <td>理科六班</td>\n",
       "      <td>379</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>999 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           name  age gender clazz  sum_score\n",
       "id                                          \n",
       "1500100001  施笑槐   22      女  文科六班        406\n",
       "1500100003  单乐蕊   22      女  理科六班        359\n",
       "1500100004  葛德曜   24      男  理科三班        421\n",
       "1500100005  宣谷芹   22      女  理科五班        395\n",
       "1500100006  边昂雄   21      男  理科二班        314\n",
       "...         ...  ...    ...   ...        ...\n",
       "1500100996  厉运凡   24      男  文科三班        355\n",
       "1500100997  陶敬曦   21      男  理科六班        293\n",
       "1500100998  容昆宇   22      男  理科四班        398\n",
       "1500100999  钟绮晴   23      女  文科五班        371\n",
       "1500101000  符瑞渊   23      男  理科六班        379\n",
       "\n",
       "[999 rows x 5 columns]"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joinDF[joinDF.index != 1500100002]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "honest-recycling",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>sum_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>22.521000</td>\n",
       "      <td>372.704000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.113013</td>\n",
       "      <td>88.660042</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>21.000000</td>\n",
       "      <td>76.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>22.000000</td>\n",
       "      <td>311.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>22.000000</td>\n",
       "      <td>372.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>24.000000</td>\n",
       "      <td>433.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>24.000000</td>\n",
       "      <td>630.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               age    sum_score\n",
       "count  1000.000000  1000.000000\n",
       "mean     22.521000   372.704000\n",
       "std       1.113013    88.660042\n",
       "min      21.000000    76.000000\n",
       "25%      22.000000   311.500000\n",
       "50%      22.000000   372.500000\n",
       "75%      24.000000   433.000000\n",
       "max      24.000000   630.000000"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joinDF.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "frozen-reference",
   "metadata": {},
   "outputs": [],
   "source": [
    "joinDF.to_csv(\"../data/joinDF.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "addressed-penny",
   "metadata": {},
   "outputs": [],
   "source": [
    "joinDF = joinDF.reset_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "clear-regulation",
   "metadata": {},
   "outputs": [],
   "source": [
    "countDF = joinDF.groupby(\"clazz\")[\"id\"].count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "fundamental-thong",
   "metadata": {},
   "outputs": [],
   "source": [
    "reCountDF = countDF.reset_index().rename(columns={\"id\":\"countNum\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "tested-furniture",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>clazz</th>\n",
       "      <th>countNum</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>文科一班</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>文科三班</td>\n",
       "      <td>94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>文科二班</td>\n",
       "      <td>87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>文科五班</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>文科六班</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>文科四班</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>理科一班</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>理科三班</td>\n",
       "      <td>68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>理科二班</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>理科五班</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>理科六班</td>\n",
       "      <td>92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>理科四班</td>\n",
       "      <td>91</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   clazz  countNum\n",
       "0   文科一班        72\n",
       "1   文科三班        94\n",
       "2   文科二班        87\n",
       "3   文科五班        84\n",
       "4   文科六班       104\n",
       "5   文科四班        81\n",
       "6   理科一班        78\n",
       "7   理科三班        68\n",
       "8   理科二班        79\n",
       "9   理科五班        70\n",
       "10  理科六班        92\n",
       "11  理科四班        91"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reCountDF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "indie-appreciation",
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "toxic-techno",
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文显示问题-设置字体为黑体\n",
    "plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题\n",
    "sns.set(font='SimHei')  # 解决Seaborn中文显示问题并调整字体大小\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "fundamental-eligibility",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3wAAAJRCAYAAAAeUbV+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8+yak3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAra0lEQVR4nO3de5TcdX3/8dfeQkJuXAxBkrbSxBblohTUmoiIgCLNDQIGiCAoxTaG1qKcyKVegKKhVX4WaU/wdsCiAYEQQEuN4SCIhUC4CCEcLRbEkhsJCUlM2M3u/P6w7CHdATZhZ2f3s4/HOR6zM7sz77zPZL889zsz21CpVCoBAACgOI31HgAAAIDaEHwAAACFEnwAAACFEnwAAACFEnwAAACFEnwAAACFEnwAAACFaq73AD3h+ec3p6PDrxMEAAAGlsbGhuy++9BXvL6I4OvoqAg+AACA/8NTOgEAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAArVXO8BAPqbEbsNyi4tu9R7jJp5se3FvLC+td5jAAA9QPAB7KBdWnbJGQuOqfcYNfOd425PIvgAoASe0gkAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFAowQcAAFComgdfW1tbzjrrrNx3331JkhUrVmTGjBmZMWNGrr322s7Pu/nmmzNt2rSceuqp+fWvf13rsQAAAIpX0+Dbtm1bZs2alWeffbbzsgsvvDCzZs3K/Pnzs2jRojz77LN55plnMm/evHzve9/LxRdfnEsvvbSWYwEAAAwINT/Dd/HFF+eAAw5IkrS3t2f58uU5/PDD09DQkIkTJ2bJkiW5//778773vS+77rpr3vSmN2XNmjVpb2+v9WgAAABFa67pjTc3Z++99+78eMuWLRk9enTnxyNGjMjq1aszZMiQvPGNb+y8fMiQIVm3bl1GjRrVrfvZc89hPTc0ABk1ani9RwAAekBNg+//GjJkSFpbWzs/3rx5cyqVSoYNG5bVq1d3uby71q7dlI6O7n8+wOsxEGJozZqN9R4BAOiGxsaGVz0B1qvv0tnU1JSRI0dmxYoVSZJly5Zl7Nixefvb3975pi6bNm3K6tWrs8cee/TmaAAAAMXp1TN8SfKxj30ss2fPzsEHH5zHHnssF110UYYOHZphw4blvPPOy29/+9tMnz49zc29PhoAAEBRGio78tzJHvLkk09m2bJlOfzwwzNy5MgkSUdHR37605+mubk5hx122A7dnqd0Ar1p1KjhOWPBMfUeo2a+c9ztntIJAP3Eaz2lsy6n0caNG5dx48Ztd1ljY2OOOOKIeowDAABQpF59DR8AAAC9R/ABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUSvABAAAUqrneA9D79hg5KE2Ddqn3GDXT3vpi1m1orfcYAABQd4JvAGoatEt+888n1HuMmvnDv7khieADAABP6QQAACiU4AMAACiU4AMAACiU4AMAACiU4AMAACiU4AMAACiU4AMAACiU4AMAACiUX7wOAAD9zB4jh6ZpULnnbtpbO7Juw+Z6j1EEwQcAAP1M06DGPPX/VtZ7jJp506f2rvcIxSj3xwIAAAADnOADAAAolOADAAAolNfwAQAARdhj5JA0DSozcdpbt2Xdhi07/HVlbgMAABhwmgY1Z9XX/rPeY9TE6L999059nad0AgAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFKq53gNAX7HbyEFpGbRLvceombbWF7N+Q2u9xwAAoBcJPvhfLYN2yX9869h6j1EzH/z4j5IIPgCAgcRTOgEAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAAol+AAAAArVXO8BgL5t5G4tGdQyuN5j1ERr29ZsWN9W7zEAAGpG8AGvalDL4Mz77gfrPUZNfOLU/0gi+ACAcnlKJwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKEEHwAAQKGa6z0AAGUYvtvgDG5pqfcYNbO1rS0b12+t9xgAsEMEHwA9YnBLS/5iwT/We4ya+eFx52ZjBB8A/UuvB9+qVaty/vnnp7W1NUly2WWXZf369bngggvS0tKSM888M0cffXRvjwUAAFCcXg++q6++OtOnT8+xxx6b2267LVdddVWWLFmSr371q9l3331z0kkn5bDDDsvgwYN7ezQAAICi9Hrw7bnnnnnsscdyxBFH5JFHHskf//Ef55FHHsmf/umfJkkOOuigPProo3nHO96xA7c5rFbj0k+NGjW83iP0SfbSlZ1UZy/V2QtA7/E9t6ud2UmvB9+HPvShXHDBBfnud7+bNWvWZPr06bnvvvs6rx8xYkRWr169Q7e5du2mdHRUenrUYg2Efzxr1mzc4a+xl+pK34udVGcv1e3MXgBqwffc6krfS7WdNDY2vOoJsF4Pvq9+9auZM2dO9ttvv7zwwguZNm1a9t13387rN2/enEpFvAEAALxevf57+FpbW7Ns2bIkyb333pu99947q1atypYtW5Iky5Yty9ixY3t7LAAAgOL0+hm+WbNm5fzzz89FF12UffbZJ5dcckmWL1+eT3ziExkzZkw6Ojpy0EEH9fZYAAAAxen14Ntvv/1y0003bXfZIYcckoMOOijPPPNMPv/5z6exsddPPAIA1NWI3XbNLi1N9R6jZl5sa88L639X7zFgwOkzv3j9oIMOcmYPABiwdmlpyt8seKbeY9TMPx/3B/UeAQYkp9IAAAAKJfgAAAAKJfgAAAAK1WdewwcAJRq+2+AMbmmp9xg1s7WtLRvXb633GAC8AsEHADU0uKUlk264tt5j1MxtJ8zMxgg+gL7KUzoBAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAKJfgAAAAK1VzvAWppj5GD0zSopd5j1Ex7a1vWbdha7zEAAIA+qujgaxrUkjX/+m/1HqNmRv31R5IIPgAAoDpP6QQAACiU4AMAACiU4AMAACiU4AMAACiU4AMAACiU4AMAACiU4AMAACiU4AMAAChU0b94HQCA/m233YampaXccxRtbR1Zv35zvcegYIIPAIA+q6WlMf9+3XP1HqNmPjTjDfUegcKV++MSAACAAU7wAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFErwAQAAFMovXgcAet3w3YZkcEuZ/xmytW1bNq7fUu8xAJIIPgCgDga3NGfaDYvrPUZN3HzCkdlY7yEA/pendAIAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABRK8AEAABSqbsG3YMGCnH/++UmSFStWZMaMGZkxY0auvfbaeo0EAABQlLoE3zPPPJNvf/vbncF34YUXZtasWZk/f34WLVqUZ599th5jAQAAFKXXg6+joyPnnntuxo8fn5tvvjnPP/98li9fnsMPPzwNDQ2ZOHFilixZ0ttjAQAAFKe5t+9w4cKFaWhoyGc/+9k888wzOfHEE7PXXnt1Xj9ixIisXr16h25zzz2H9fSY/caoUcPrPUKfZC/V2UtXdlKdvVRnL9XZS1d2Up29VGcv1dlLVzuzk14PvkcffTQnnnhiRo8endGjR2fkyJF57LHHOq/fvHlzKpXKDt3m2rWb0tHR9WsGwoNkzZqNO/w19lKdvVRX+l7spDp7qc5eqrOXruykOnupzl6qs5euqu2ksbHhVU+A9fpTOseNG5cnn3wySfLcc89l1apVOeCAA7JixYokybJlyzJ27NjeHgsAAKA4vX6Gb/r06bnwwgtz0kknZf369Tn33HMzdOjQzJ49OwcffHAee+yxXHTRRb09FgAAQHF6PfgGDx6cf/qnf+py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I/PmzcuLL76YWbNm5b3vfW/OOOOMHHHEEdlnn316ezQAAICi9PpTOmfOnJljjz02SbJ27dqMGjUqy5cvz+GHH56GhoZMnDgxS5Ys6e2xAAAAitPrZ/hesm7dunznO9/JN77xjfziF7/ovHzEiBFZvXr1Dt3WnnsO6+nx+o1Ro4bXe4Q+yV6qs5eu7KQ6e6nOXqqzl67spDp7qc5eqrOXrnZmJ3UJvra2tnz605/Opz/96ey9995pbW3tvG7z5s2pVCo7dHtr125KR0fXrxkID5I1azbu8NfYS3X2Ul3pe7GT6uylOnupzl66spPq7KU6e6nOXrqqtpPGxoZXPQHW60/pbG9vz6c//ekceeSROfLII9PU1JSRI0dmxYoVSZJly5Zl7NixvT0WAABAcXr9DN+NN96YO++8M2vWrMkPf/jD7LPPPvnYxz6W2bNn5+CDD85jjz2Wiy66qLfHAgAAKE6vB9+HP/zhfPjDH+5y+b777ptly5bl7LPPztChQ3t7LAAAgOLU7U1b/q9x48Zl3Lhx9R4DAACgGL3+Gj4AAAB6h+ADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOADAAAolOAD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X87UqVMH3HGoFnt5SX8+DtVyL93RF/dSq5309+NQLfZSwnGo1v+G+vJxaMC/aUtzc3Pe//73Z8GCBalUKrnmmmty0kkndV7f2NiYp59+OkuXLk1ra2suuOCC7Lfffjn++OOzZMmSJMlTTz2VZ555JlOnTs3SpUvzyCOP5Be/+EXV/y1dujTTp0/Piy++mIcffjibNm3Kr371qzQ0NGTDhg0ZNGhQfvnLX2br1q355S9/WbcXuPbkXl7yve99L4sXL86iRYs6/3fHHXd0HmST9Om91GIn3dGXd5L0/F6GDRuWG264Id///vez11575brrrsv3v//9nHbaaRk6dGjn7Q60vbzkyiuvzNVXX50k+Y//+I989rOf3e76gbqXb3zjGznllFOS/H4HbW1t272ovi/u5QMf+EDOPffc/Nmf/VnOPffcDB8+PPPnz895552Xu+66KyeffHKampqybdu2AXUcqsVeXtKfj0O13Et39MW91Gon/f04VOvHSn89DtV6L335ONRQqVQqPX6r/czvfve7fOQjH8nb3va2NDU1dfnp6KxZszJ8+PC8613vyhvf+Mb893//d37961/nv/7rv/Lggw9m0qRJOf7443PooYfu0P1u27YtZ5xxRr773e8mSb797W9nv/32y4QJE/LhD384119/fY/9HXeGvXRlJ9XVYi+bN2/OzJkzc/PNNydJvvWtb2XkyJE54YQTOj9noO3l2WefzdSpU/Ptb387Bx54YDZu3Jjjjz8+Z599dqZMmdJ5uwNpL0cffXROOeWUrF69OnPmzEny+7NXDz/8cKZPn55rrrmm8ylHfXEvTz/9dP71X/81X/7ylzufQrZ8+fLOnzYnv//p+Sc/+ckB9b3FXqqzl65quZP+fByq1V76+3GoFnvpD8ehAf+UzuT3z6l929velhtuuCGf//znt7vuxz/+cXbddde85S1vSZLsvffeWb58eaZMmZL99tsvf/EXf5FLL730dd3/008/nbFjx+bee+/NjBkzXtdt9SR76aqndvLST3xe7Z31Xnotzsuf290Xd5LU5rHy1FNP5U1velPnx1u2bMkb3vCGqvc/EPbS1taWc845J2eccUYOPPDAJMnw4cPzta99LWeccUYOPvjg/MEf/MF29zEQ9pIkJ5988nb/Tl56C+0kueaaa7rcf1/by8qVK/P3f//3GTZsWB566KFs3bo1q1evzsknn5y2trZ88IMfHJDfb+2lup7cSynHolo9Vvr7cain91LKcagWj5e+fhwa0MG3YcOGLF68ONdff32OOeaY/OxnP8tll12W66+/PtOmTcuECRPyvve9L+9617uyYMGCJMm+++6bfffdt/M2KpVKl+cud8emTZvyk5/8JMuWLcs///M/Z8qUKdlzzz23e7B0dHS84gtAa6mn93Lrrbdm7ty5GTJkyCve58aNGzN37twccsghfXIvtdjJ5z//+e1eR/J/dXR05Itf/GKOOuqoPrmTpOf38uCDD+aCCy5IU1NTfve732Xz5s2ZNGlSkmTt2rUZNGhQ5s2blwsvvDAHHXTQgNlLR0dHPvvZz6alpSWf+MQntruvt771rTnppJNy4YUX5uqrrx5Q31uS3//H6GmnnfaK9/nSf9D2xb0sXrw4V155ZQ455JBMmzYt+++/f5J0+Wlza2trtmzZMmCOQ7XYSwnHoVrtpT8fi2qxkxKOQ7XYSwnHoVp9z+0Px6EBG3wrVqzIX/7lX+aYY47J1772tYwePTpJ8g//8A/59a9/nRtuuCHnnHNOrrjiiowZMyZtbW1pa2vrcjvbtm1La2trl99B8loeeOCBPPjgg7n11lvT0dGRv/7rv843v/nN/Mu//Eseeuih7LrrrjnjjDPyoQ99aLvXt9RaLfYyefLkTJ48uVv3f+edd/a5vdRiJ9OmTcu0adO6df99cSdJbfZy4IEHZuHCha/6jlUvfeO8++67B8xetm7dmt133z3nn39+1Z/Ez5o1q/N1BQPpe0vy+584v9pTYF56Q5i+uJcDDzwwV199dYYPH57Vq1fnxBNPTHNzc7Zs2dL50+ZKpZL3vve9mTVr1oA5DtViL/39OJTUZi/9/VhUi52UcByqxV5KOA7V6ntufzgOeQ1fH1CpVPLb3/62y2nwgc5eurKT6uyluoGwl/Xr13f+QuTu6ot7qVQqaWtr6/IfmR0dHWlvb09LS0vN77+v7SSxl1diL13ZSXX2Ul1P7qU/HIcEHwAAQKEG/K9lAAAAKJXgAwAAKJTgA4DXcMUVV+SKK66o9xgAsMMEHwAAQKEEHwAAQKEG7O/hA4D/65vf/Gb+7d/+LZVKJeecc06mTp36ip/7/e9/P/PmzUt7e3tOPfXUnHXWWdm0aVM++MEPJvn923uvW7cuDzzwQBoaGqpePnz48F75ewEwcAk+AEhyzz33ZOHChbnlllvywgsvZPLkyTnqqKMydOjQLp/74osvZuHChbnuuusyYsSIHHHEEZk5c2aGDRuWe+65J0ly+eWXZ+3atZ1R90qXA0AtCT4ASHL33Xdn8uTJGTFiREaMGJGHHnroFT93l112yWWXXZaFCxdm6dKl2bBhQ55//vnOOLzrrrty1113Zf78+dt93StdDgC14jV8AFDF7bffnlWrVlW97je/+U1mzpyZ3XbbLXPmzMkb3/jGzutWrFiRiy66KJdffnl22WWX17wcAGpJ8AFAkve85z257bbbsnHjxqxatSoXX3xxGhurHyYff/zxjBkzJieccEKefvrprFy5MknS1taWv/u7v8tnPvOZvOlNb+r8/Fe6HABqTfABQH4ffJMmTcrkyZNzyimn5LzzzsuoUaOqfu6ECRM6v+a2227L2LFj89RTT+Whhx7KI488kosvvjgTJ07MxIkT8/Of//wVLweAWmuoVCqVeg8BAABAz3OGDwAAoFCCDwAAoFCCDwAAoFCCDwAAoFCCDwAAoFCCDwAAoFCCDwAAoFCCDwAAoFD/HybQhRCWVp7lAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1080x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15, 10))\n",
    "sns.barplot(x=\"clazz\",y=\"countNum\",data=reCountDF)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "above-import",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1080x720 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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qNgoP/roozrVKCoq4qWXXuLee+/FbrefMX5paSk7duygbdu2dV4X1157LVu2bAEgOzsbi8VCWFgY2dnZ3HfffaSnp9OhQweOHDlCUFAQrVu35qqrrmLr1q11WhfV1fD396e4uLhBapxr/OzsbJo3b05eXh7Dhg0jMTGxTttsY8zh9O3pbDWKior417/+Vacalbenli1bnlHj3nvvdV8GWp91UXmbqk7fvn3ZvHkzX331FV9++SVTp07F6XRy77338tZbb7F8+fIq62LIkCGMHTv2rOMZIqybEpfLxZEjR856cq+pj3++1sjLy3N/kOf0MSquI67M6XRSVlZGVlZWvefQ2DXONX7FB1zquy584X1q6Bpn26b+qH5d14XCWkTEAAx3NYiIyPlIYS0iYgAKazkvLVy4kIULF3q7DZEaU1iLiBiAwlpExAAM86EYkbp46623+O///m9cLhcPPfQQw4cPP+vPfvjhhyxatIjy8nLuuOMOpkyZgs1m46abbgJOXd71+++/s2vXLkwmU7XLw8LCPDIvOf8orMVnbd26ldWrV7NmzRry8/MZOnQogwYNIiQk5IyfLS0tZfXq1Sxfvhyr1cqAAQNITEwkNDSUrVu3ArBgwQJyc3PdgXy25SKNQWEtPmvz5s0MHToUq9WK1Wp1f1qsOkFBQTz//POsXr2ab7/9lpMnT3LixAl3sH/99dd8/fXXLFu2rMrrzrZcpKHpmLWcN9atW3fWu8sdPnyYxMREmjdvziOPPEKbNm3cz2VmZpKcnMyCBQuqfCz7bMtFGoPCWnzWtddey6effkpBQQFZWVk8/fTTVW56VdmPP/5I27ZtufXWW/n11185duwYcOrubX/5y194+OGHq9xx8GzLRRqLwlp81rXXXsvNN9/M0KFDue2223jssceIiIio9mcrbsFaEfDt2rXjl19+4fvvv2fPnj08/fTT9OnThz59+vCPf/zjrMtFGovuDSIiYgDasxYRMQCFtYiIASisRUQMQGEtImIACmsREQNQWIuIGIDCWkTEABTWIiIG8P/TnY0CakMJBAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15, 10))\n",
    "sns.relplot(x=\"clazz\",y=\"countNum\",data=reCountDF)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "informative-hearing",
   "metadata": {},
   "outputs": [],
   "source": [
    "tips = sns.load_dataset(\"tips\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "planned-response",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>total_bill</th>\n",
       "      <th>tip</th>\n",
       "      <th>sex</th>\n",
       "      <th>smoker</th>\n",
       "      <th>day</th>\n",
       "      <th>time</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>16.99</td>\n",
       "      <td>1.01</td>\n",
       "      <td>Female</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10.34</td>\n",
       "      <td>1.66</td>\n",
       "      <td>Male</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>21.01</td>\n",
       "      <td>3.50</td>\n",
       "      <td>Male</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>23.68</td>\n",
       "      <td>3.31</td>\n",
       "      <td>Male</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>24.59</td>\n",
       "      <td>3.61</td>\n",
       "      <td>Female</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   total_bill   tip     sex smoker  day    time  size\n",
       "0       16.99  1.01  Female     No  Sun  Dinner     2\n",
       "1       10.34  1.66    Male     No  Sun  Dinner     3\n",
       "2       21.01  3.50    Male     No  Sun  Dinner     3\n",
       "3       23.68  3.31    Male     No  Sun  Dinner     2\n",
       "4       24.59  3.61  Female     No  Sun  Dinner     4"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tips.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "stupid-speaking",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n"
     ]
    }
   ],
   "source": [
    "print(type(tips))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "affected-namibia",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.FacetGrid at 0x1939020ef48>"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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cf7rWAKtkccEIq/Xui7ymL5U2dAeDmbHrNzRQHDOl/ElFPTafUwBN94Dm6PK9ZbqXruHEEKcrpgMaIYBisUaVa5Y7RhdHExTTNFrfBSLFRT1uGM620Mr8pi+ZOpk106zScEw23t1woBmsmPJKIgqV5zJ0QcLIcQAicmABmDOHoVqj4soS5x3HQGiA11nlNThmOIj9yZLWnBTxPiYkpoffczZN/XbGFpOipOiE9apXb6giERn745rBRQbSYu+gmK1h8viJp6LkZTbq/cRQojTEbPbxyhKaIzLf3grensztsIpBBPz0boxbGjz1REs34bWVIOtcBJaciFBJTIg2vx1BMtOfUxX9WT7iTZfkJ2HGjlU1UrJiFQKs+KxmXv/e4qiKNj89ejN1Si2ODRXJkGle/ulnUi2F4lt8ryndy3RfTEb0I5RlKOJgnuYgqkr55/uPY45nX8Qqnr69+9v8oEX2+R5T+9aovtidpbjMccWKPfl+ad7j94w1IKZEEL0tpgdQxNCCHFmkYAmhBAiJkhAE0IIERMkoAkhhIgJEtCEEELEBAloQgghYoIENCGEEDFBApoQQoiYMOQWVqtqbO8DFevPdyJ53tgmzyv605BLfSWEEEJ0RrochRBCxAQJaEIIIWKCBDQhhBAxQQKaEEKImCABTQghREyQgCaEECImSEATQggREySgCSGEiAkS0IQQQsQECWhC9BG3282KFSvYsWPHQFdFiDPCkMvlGEsCgQDf/OY3uf3225k1axaVlZXcfffdACxZsoSlS5cObAV7UVtbG/feey+BQICmpiYefPBBMjIyYvp5b7/9ds455xzWrVvHggULuOCCC2L2eY/53ve+x/z581m8eDHf+ta38Hq9zJo1i+9+97sDXbVed/HFF5OamgrAjBkzuO2222L+mQc9QwyIQCBg3HHHHcYll1xirF692jAMw7jtttuM5cuXG7quG7feeqtRUVExwLXsPX/729+MN9980zAMw/jwww+Nr3/96zH9vFu2bDHef/99wzAMY9euXcZtt90W089rGIbx5ptvGhMnTjRefPFF40c/+pHxt7/9zTAMw7jvvvuMDRs2DHDteldlZaVx1113RZTF+jMPBdLlOIAeeeQRSkpKANA0jZ07d3L22WejKArz5s1j7dq1A1zD3rN06VIuvvhiAOrr60lPT4/p550wYQLnnXcepaWl/P73v+fyyy+P6eetra3liSee4MYbbwTgs88+4/LLLwfgnHPOYeXKlQNZvV63bt06duzYwdKlS7nhhhvYunVrzD/zUCBdjgPEbDaTlZUV/tnj8ZCZmRn+OSEhgZqamoGoWp9qaGjgqaee4k9/+hNbtmwJl8fq865Zs4aDBw/idDpj+v198MEH+f73v8+qVasAUFUVl8sFxN6zAhQXF/PUU09RVFTEunXr+MUvfhHzzzwUSEAbJBwOB36/P/yz2+3GiLGdfQKBAPfccw/33HMPWVlZMf+8ADfddBNz587l7rvvJhAIhMtj6Xn/+c9/UlxczPTp08MBzWw2YxgGiqLgdrsHuIa9r7CwELvdDsDYsWMpLS0lMTExpp95KJAux0HCZDKRmJhIZWUlANu3byc3N3eAa9V7NE3jnnvuYdGiRSxatCjmn/ef//wnv/rVrwBoamoiOTk5Zp/3gw8+YP369dx88828/PLL/PGPf6S+vp6NGzcCsGPHjph51mMeeughPvvsMwDeeecdSkpKGDduXEw/81AgG3wOsPvvv58rr7ySWbNm8cEHH/D4448zZcoUVqxYwUsvvURcXNxAV7FXvPDCCzz66KOMHz8egJycHC666KKYfV6/38+//du/UVVVhc1m48EHH+TAgQMx+7zHPPbYYwwbNozi4mJ+8IMfsGDBAt58803+8Y9/RHSxD3UVFRV873vfo729nczMTB566CHq6+tj+pmHAglog0xpaSnbt2/n7LPPJjExcaCr0+fkeWNXRUUF69evZ/bs2RHjh7HsTHzmwUQCmhBCiJggY2hCCCFiggQ0IYQQMUECmhBCiJggAU2I49x///289NJLX3jcY489xmOPPXbS3z/66KO89dZbXT7vpZde4v777+9eZYUQESSgiSGlpaWFp59+ukvHlpeXdyk49YUHHnggnOpLCNE/JKCJIaWlpYW//vWvXTq2oqKCl19+uY9rJIQYLCSgiSHjnnvu4ZprrqGyspJ58+Zx++23A/DnP/+Zc845hwsuuICPP/4YCKWc+va3v82mTZuYN28eDzzwAAC6rvOjH/2I+fPnc/755/Ppp5/2uD579uzhsssuY+HCheH7HtPVrkshRO+RXI5iyPj1r39NeXk5t9xyCx999BEAK1eu5JVXXuHVV1+ltraWW2+9lVdffZXnnnuONWvW8Lvf/Y5nnnkmfI2tW7fS3NzM8uXL2bZtG48++ijz58/vUX22bdvGyy+/THl5OXfeeSfLli3DZrP1yrMKIbpPApoY0j755BOWLFlCYmIiiYmJTJw4kfXr13PhhRd2evykSZP48pe/zG9/+1s+++wzGhsbe3zv888/n6SkpPB/Bw4cYMyYMT2+nhDi9EiXo4gpiqKc8vevvfYaDz/8MGPHjuXBBx/stXupqhoz2fOFGKokoIkhJSkpicbGRjweDx6Ph5kzZ/L666/T0tJCaWkpW7ZsYfr06QAkJydTVVWFpmk0NzejaRqff/458+fPZ/HixeFuy5768MMPaW5uZteuXdTV1VFQUNALTyiE6CnpchRDisvl4qtf/Srnn38+uq7zj3/8g8svv5wlS5Zgs9n4yU9+QlpaGgCjRo1izpw5LFiwAFVVef/997nyyiu5++67eeONN7joootoaGigtbWV+Pj4btclPz+f6667Dq/Xy6OPPorD4ejtxxVCdIMkJxZCCBETpIUmxCnMmzcvqiwlJYXXX399AGojhDgVaaEJIYSICTIpRAghREyQgCaEECImSEATQggREySgCSGEiAkS0IQQQsSE/w8lf01GIAzITQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432.6x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.relplot(data=tips, x=\"total_bill\", y=\"tip\",hue=\"sex\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "worthy-delay",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
